var google = {};

google.load = function(type, version, optionalSettings) {};

google.setOnLoadCallback = function(callback) {};

/** @constructor */
gadgets.MiniMessage = function(namespace) {};

gadgets.MiniMessage.prototype.createStaticMessage = function(msg) {};

gadgets.MiniMessage.prototype.dismissMessage = function(msg) {};

google.oauth = {};

google.gdata = {};

google.gdata.atom = {};

/**
 * @constructor
 */
google.gdata.atom.Id = function() {};

/**
 * @return {string} ID value
 */
google.gdata.atom.Id.prototype.getValue = function() {};

/**
 * @param {string} id ID
 */
google.gdata.atom.Id.prototype.setValue = function(id) {};

/**
 * @constructor
 * @param {string} mod_id Module ID
 */
gadgets.MiniMessage = function(mod_id) {};

/**
 * @param {string} msg The message
 * @param {int} time time to display for
 */
gadgets.MiniMessage.prototype.createTimerMessage = function(msg, time) {};

/** 
 * @constructor
 * @param {string} oauthApprovalUrl URL
 * @param {string} args Height/Width, etc.
 * @param {function} callback callback function
 * @param {string} original original function
 */
gadgets.oauth.Popup = function(oauthApprovalUrl, args, callback, orginal) {};

/**
 * @return {Function} fn
 */
gadgets.oauth.Popup.prototype.createOpenerOnClick = function() {};

/** @constructor */
google.oauth.OAuthApproval = function() {};

/** @type {string} */
google.oauth.OAuthApproval.prototype.oauthApprovalUrl = '';

gadgets.util = {};

/** @constructor */
gadgets.util.URLParameters = function() {};

/** @type {string} */
gadgets.util.URLParameters.prototype.parent = '';

/**
 * @param {Function} callback Function to run on boot
 */
gadgets.util.registerOnLoadHandler = function(callback) {};

/**
 * @return {gadgets.util.URLParameters} URL parameters
 */
gadgets.util.getUrlParameters = function() {};

/** @type {string} */
gadgets.io.RequestParameters.CONTENT_TYPE = '';

/** @type {string} */
gadgets.io.ContentType.JSON = '';

/** @type {string} */
gadgets.io.RequestParameters.AUTHORIZATION = '';

/** @type {string} */
gadgets.io.RequestParameters.OAUTH_SERVICE_NAME = '';

/** @type {string} */
gadgets.io.RequestParameters.OAUTH_USE_TOKEN = '';

/** @type {string} */
gadgets.io.RequestParameters.METHOD = '';

/** @type {string} */
gadgets.io.AuthorizationType.OAUTH = '';

/** @type {string} */
gadgets.io.MethodType.GET = '';

/**
 * @param {{data: Object}} response response data
 */
gadgets.io.response = function(response) {};

/**
 * @param {string} url URL
 * @param {gadgets.io.response} callback Callback
 * @param {Object=} params parameters
 */
gadgets.io.makeRequest = function(url, callback, params) {
   
}

google.calendar = {};
google.calendar.subscribeToDataChange = function(callback) {};

google.calendar.refreshEvents = function() {};

google.gdata = {};
google.gdata.calendar = {};
google.calendar.read = function(event) {};
google.calendar.read.subscribeToEvents = function(callback) {};

/**
 * @return {string} decoded event ID
 */
google.calendar.read.decode64 = function(eid) {};
google.calendar.read.isRecurring = function(event) {};

/**
 * @param {google.calendar.CalendarEntry} event Calendar Event
 */
google.calendar.read.getRecurringGDataId = function(event) {};

/**
 * @param {google.calendar.CalendarEntry} event Calendar Event
 */
google.calendar.read.getGDataId = function(event) {};

google.calendar.getPreferences = function(fn) {};

/**
 * @param {Object=} params optional parameters
 * @constructor 
 */
google.calendar.CalendarEntry = function(params) {};

/** 
 * @type {string} 
 */
google.calendar.CalendarEntry.prototype.accessLevel = '';

google.calendar.CalendarEntry.prototype.getExtendedProperties = function() {};

/**
 * @param {google.gdata.ExtendedProperty} prop Property to add
 */
google.calendar.CalendarEntry.prototype.addExtendedProperty = function(prop) {};

/**
 * @return {google.gdata.atom.Id} ID
 */
google.calendar.CalendarEntry.prototype.getId = function() {};

/**
 * @param {google.gdata.calendar.CalendarLink} cl Calendar Link
 */
google.calendar.CalendarEntry.prototype.setWebContentLink = function(cl) {};

google.calendar.CalendarEntry.prototype.setExtendedProperties = function(props) {};

google.calendar.CalendarEntry.prototype.removeWebContent = function() {};

google.calendar.CalendarEntry.prototype.updateEntry = function(callback) {};

google.calendar.CalendarEntry.prototype.getHtmlLink = function() {};

/** 
 * @type {string} 
 */
google.calendar.CalendarEntry.prototype.title = '';

/**
 * @constructor
 */
google.calendar.CalendarResult = function() {};

/**
 * @type {google.calendar.CalendarEntry}
 */
google.calendar.CalendarResult.prototype.entry = {};

/** @constructor */
google.gdata.calendar.WebContent = function() {};

/**
 * @param {string} url URL
 */
google.gdata.calendar.WebContent.prototype.setUrl = function(url) {};

/** @type {string} */
google.gdata.calendar.WebContent.DISPLAY_CHIP = '';

/**
 * @param {google.gdata.calendar.WebContent.DISPLAY_CHIP} display Display Type
 */
google.gdata.calendar.WebContent.prototype.setDisplay = function(display) {};

/**
 * @param {number} h Height
 */
google.gdata.calendar.WebContent.prototype.setHeight = function(h) {};

/**
 * @param {number} w Width
 */
google.gdata.calendar.WebContent.prototype.setWidth = function(w) {};

/**
 * @param {google.gdata.calendar.WebContentGadgetPref} pref Preference
 */
google.gdata.calendar.WebContent.prototype.addGadgetPref = function(pref) {};

/** @constructor */
google.gdata.calendar.WebContentGadgetPref = function() {};

google.gdata.calendar.WebContentGadgetPref.prototype.setName = function(name) {};
google.gdata.calendar.WebContentGadgetPref.prototype.setValue = function(value) {};

/** @constructor */
google.gdata.calendar.CalendarLink = function() {};

/**
 * @param {google.gdata.calendar.WebContent} wc Web content
 * @param {string} icon Icon URL
 * @param {string} t Title
 * @param {string} mime MIME type of WebContent
 * @return {google.gdata.calendar.CalendarLink} The calendar link 
 */
google.gdata.calendar.CalendarLink.create = function(wc, icon, t, mime) {};

/** @constructor */
google.gdata.calendar.CalendarService = function(svc) {};
google.gdata.calendar.CalendarService.prototype.useOAuth = function(type) {};

/**
 * @param {string} gdataId GData Identity
 * @param {function} gdataCallback successcallback function
 * @param {function} errorCallback error callback function
 */
google.gdata.calendar.CalendarService.prototype.getCalendarEventEntry = function(gdataId, gdataCallback, errorCallback, optParams) {};

/**
 * @param {string} gdataId GData Identity
 * @param {function} gdataCallback successcallback function
 * @param {function} errorCallback error callback function
 */
google.gdata.calendar.CalendarService.prototype.getCalendarEntry = function(gdataId, gdataCallback, errorCallback) {};

/**
 * @param {string} gdataId GData Identity
 * @param {function} gdataCallback successcallback function
 * @param {function} errorCallback error callback function
 */
google.gdata.calendar.CalendarService.prototype.getEventsFeed = function(gdataId, gdataCallback, errorCallback) {};

/** @constructor */
google.gdata.ExtendedProperty = function() {};

/**
 * @param {string} name Property name
 */
google.gdata.ExtendedProperty.prototype.setName = function(name) {};

/**
 * @param {string} value Property value
 */
google.gdata.ExtendedProperty.prototype.setValue = function(value) {};


var gadgets = {};
gadgets.window = {};
gadgets.MiniMessage = function(str) {};
gadgets.window.adjustHeight = function() {};
gadgets.window.setTitle = function() {};

/** @constructor */
gadgets.Prefs = function() {};
gadgets.Prefs.prototype.getString = function(key) {};


google.contentmatch = {};

google.contentmatch.getContentMatches = function() {};
/** @constructor */
google.gdata.calendar.Person = function() {};

/** @type {string} */
google.gdata.calendar.Person.prototype.email = '';

/** @constructor */
google.gdata.calendar.CalendarEventEntry = function() {};

/** @type {google.gdata.calendar.Person} */
google.gdata.calendar.CalendarEventEntry.prototype.creator = {};

/** @type {string} */
google.gdata.calendar.CalendarEventEntry.prototype.title = '';

/** @type {Date} */
google.gdata.calendar.CalendarEventEntry.prototype.startTime = '';

/** @type {Date} */
google.gdata.calendar.CalendarEventEntry.prototype.endTime = '';
